home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / lists / mint / l_1599 / 1443 < prev    next >
Encoding:
Internet Message Format  |  1994-08-27  |  1.6 KB

  1. From: Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
  2. Date: Tue, 24 May 94 11:37:07 +0200
  3. Message-Id: <9405240937.AA27390@issan.informatik.uni-dortmund.de>
  4. To: mint@atari.archive.umich.edu
  5. Subject: MiNTlib: support for MFS_MKNOD
  6.  
  7. This patch add support for MFS_MKNOD to mknod.  This is mainly useful
  8. for unpacking the Linux root filesystem under MiNT, with its device
  9. files under /dev.
  10.  
  11. Thanks to Stephen for adding MFS_MKNOD to MinixFS.
  12.  
  13. *** orig/mknod.c    Tue Oct 12 20:05:16 1993
  14. --- mknod.c    Sat May 21 23:41:02 1994
  15. ***************
  16. *** 1,20 ****
  17. ! /* fake mknod -- this always fails */
  18.   
  19.   #include <errno.h>
  20.   #include <support.h>
  21.   #include <stat.h>
  22.   
  23.   int
  24.   mknod(path, mode, dev)
  25. !     char *path;
  26.       int mode, dev;
  27.   {
  28.       if (S_ISDIR(mode)) {
  29.           return (mkdir(path, (mode_t) mode));
  30.       }
  31. !     if (S_ISFIFO(mode)) {
  32. !         return (mkfifo(path, (mode_t) mode));
  33. !     }    
  34. !     errno = EINVAL;
  35. !     return -1;
  36.   }
  37. --- 1,34 ----
  38. ! /* fake mknod -- this always fails, except with MinixFS 0.06pl10 or later */
  39.   
  40.   #include <errno.h>
  41.   #include <support.h>
  42.   #include <stat.h>
  43. + #include <limits.h>
  44. + #include <types.h>
  45. + #include <mintbind.h>
  46. + #include <errno.h>
  47. + #include "lib.h"
  48. + #define MFS_MKNOD 0x10f
  49.   
  50.   int
  51.   mknod(path, mode, dev)
  52. !     const char *path;
  53.       int mode, dev;
  54.   {
  55. +     long err, magic;
  56. +     char _path[PATH_MAX];
  57.       if (S_ISDIR(mode)) {
  58.           return (mkdir(path, (mode_t) mode));
  59.       }
  60. !     _unx2dos (path, _path);
  61. !     err = Dcntl (MFS_MKNOD, _path,
  62. !              ((long) mode & 0xffff) | ((long) dev << 16));
  63. !     if (err < 0)
  64. !       {
  65. !         errno = -err;
  66. !         return -1;
  67. !       }
  68. !     return 0;
  69.   }
  70.